Kiến trúc Hadoop Apache Hadoop

Hadoop framework gồm hai layer chính:

  • Hadoop Distriduted file system (HDFS):
    • HDFS được thiết kế và tối ưu hóa để lưu trữ các tập tin rất lớn và với một mô hình truy cập trực tuyến. Kể từ khi nó được dự kiến sẽ chạy trên phần cứng thương mại, nó được thiết kế để tính đến và xử lý sự cố trên máy cá nhân. HDFS thông thường không lưu trữ dữ liệu chính. Thay vào đó, trong một việc điển hình, dữ liệu được sao chép sang HDFS cho mục đích thực hiện MapReduce, và kết quả sau đó sẽ được sao chép sang HDFS. Từ khi HDFS được tối ưu hóa cho các luồng truy cập thông tin lớn, truy cập ngẫu nhiên vào các thành phần của các tập tin thì tốn kém hơn truy cập tuần tự rõ ràng, và nó cũng không hỗ trợ cập nhật các tập tin, chỉ có thể gắn thêm. Các kịch bản điển hình của các ứng dụng sử dụng HDFS sau mô hình truy cập ghi một lần đọc nhiều lần
    • Các tập tin trong HDFS được chia thành một số khối lớn (thường là 64Mb) và được lưu trong Data Node. Một tập tin điển hình được phân phối trên một số DataNodes nhằm thúc đẩy băng thông cao và xử lý song song. Để nâng cao độ tin cậy, các khối dữ liệu trong HDFS (data blocks) được nhân bản và lưu trỡ trong 3 máy, với một trong những bản sao trong mỗi giá khác nhau để tăng sự sẵn có hơn nữa của dữ liệu. Việc duy trì các tập tin siêu dữ liệu được xử lý bởi một NameNode riêng biệt. Siêu dữ liệu này bao gồm ánh xạ từ tập tin vào khối và vị trí của khối (DataNode). NameNode theo định kì sẽ truyền đạt siêu dữ liệu của nó cho Secondary NameNode khi cần cấu hình lại để làm nhiệm của NameNode khi xảy ra trường hợp lỗi.
  • Execution engine (MapReduce):
    • Trong Hadoop, JobTracker (công việc theo dõi) là một điển truy cập cho clients. Nhiệm vụ của JobTracker là đảm báo kế hoạch và lập kế hoạch công việc sắp tới của MR, và giao nhiệm vụ cho các TaskTrackers mà nó có trách nhiệm thực hiện. Một TaskTracker có thể chạy một số của nhiệm vụ phụ thuộc trong các nguồn lực có sẵn (một ví dụ 2 nhiệm vụ Map và 2 nhiệm vụ reduce) và sẽ phân bố cho các nhiệm vụ mới bằng JogTracker khi nó sẵn sàng. Các kích thước tương đối nhỏ của từng công việc so với số lượng lớn các nhiệm vụ trong tổng số giúp đảm bảo cân bằng tải giữa các máy. Cần lưu ý rằng trong khi số lượng công việc Map được thực hiện dựa trên kích thước dầu vào của dữ liệu (số lượng phân chia) thì số lượng công việc REDUCE là do người dùng chỉ định.
    • Trong một cụm lớn, việc các máy xảy ra sự cố là thường xuyên, và để xử lý vấn đề này, thông điệp này thường được gửi từ TaskTracker tới JobTracker định kì và từ công việc Map tới công việc REDUCE. Bằng cách này, lỗi có thể được phát hiện và JobTracker có thể sắp xếp lại những nhiệm vụ lỗi cho các TaskTracker khác. Hadoop theo một mô hình thực hiện suy đoán để xử lý sự cố. Thay vì cố định một nhiệm vụ thất bại hoặc chạy chậm, nó thực hiện một nhiệm vụ tương đương mới như sao lưu. Thất bại của JobTracker tự nó không thể được xử lý tự động, nhưng xác suất thất bại của một máy cụ thể là thấp để điều này không nên trình bày một vấn đề nói chung.

Nguyên tắc thiết kế của Hadoop:

  • Cần xử lý dữ liệu lớn
  • Cần tính toán song song trên hàng ngàn node
  • Chịu lỗi và phục hồi tự động

Tài liệu tham khảo

WikiPedia: Apache Hadoop http://apiwave.com/java/api/org.apache.hadoop http://research.google.com/archive/gfs.html http://research.google.com/archive/mapreduce.html http://www.nytimes.com/2009/03/17/technology/busin... http://ee380.stanford.edu/cgi-bin/videologger.php?... http://www.stanford.edu/class/ee380/Abstracts/1111... http://d-nb.info/gnd/1022420135 http://www.se-radio.net/2010/03/episode-157-hadoop... http://hadoop.apache.org/ https://intellipaat.com/blog/hadoop-creator-goes-t...